package com.pic.mgt.haishin.manager.terminal;

import java.util.Date;

import com.pic.mgt.manager.terminal.TerminalManagementOperationException;
import com.pic.mgt.manager.terminal.TerminalManager;

public interface HaishinTerminalManager extends TerminalManager {
	
	/**
	 * 動態新增加一個端末。此新增動作，包含立即新增端末目錄與資料庫資料。
	 * 有效開始時間為當下；有效結束時間不給定。
	 * @param newTerminalId
	 * @return 
	 * @throws TerminalManagementOperationException
	 */
	public void addTerminal(String newTerminalId) throws TerminalManagementOperationException;
	
	/**
	 * 動態新增加一個端末。此新增動作，包含立即新增端末目錄與資料庫資料。
	 * 有效結束時間不給定。
	 * @param newTerminalId
	 * @param effectiveStartTimeString 有效開始時間字串。 (格式: yyyyMMddHHmmss)
	 * @return
	 * @throws TerminalManagementOperationException
	 */
	public void addTerminal(String newTerminalId, String effectiveStartTimeString) throws TerminalManagementOperationException;
	
	/**
	 * 動態新增加一個端末。此新增動作，包含立即新增端末目錄與資料庫資料。
	 * 有效結束時間不給定。
	 * @param newTerminalId
	 * @param effectiveStartTime　有效開始時間
	 * @throws TerminalManagementOperationException
	 */
	public void addTerminal(String newTerminalId, Date effectiveStartTime) throws TerminalManagementOperationException;
	
	/**
	 * 動態新增加一個端末。此新增動作，包含立即新增端末目錄與資料庫資料。
	 * @param newTerminalId
	 * @param effectiveStartTimeString 有效開始時間字串 (格式: yyyyMMddHHmmss)
	 * @param effectiveEndTimeString 有效結束時間字串 (格式: yyyyMMddHHmmss)
	 * @throws TerminalManagementOperationException
	 */
	public void addTerminal(String newTerminalId, String effectiveStartTimeString, String effectiveEndTimeString) throws TerminalManagementOperationException;
	
	/**
	 * 動態新增加一個端末。此新增動作，包含立即新增端末目錄與資料庫資料。
	 * @param newTerminalId
	 * @param effectiveStartTime 有效開始時間
	 * @param effectiveEndTime 有效結束時間
	 * @throws TerminalManagementOperationException
	 */
	public void addTerminal(String newTerminalId, Date effectiveStartTime, Date effectiveEndTime) throws TerminalManagementOperationException;
	
	/**
	 * 動態移除一個端末。此移除動作，包含立即移除端末目錄與資料庫資料。
	 * @param toBeRemovedTerminalId
	 * @throws TerminalManagementOperationException
	 */
	public void removeTerminal(String toBeRemovedTerminalId) throws TerminalManagementOperationException;
}
